package com.xxx.util;
/*
* jdbc规范下相关对象的【创建】和【销毁】
* 一、JDBC开发步骤：
*     1.注册数据库服务器提供的Driver接口实现类
*     2.创建一个连接通道交给connection接口的实例对象
*     3.创建一个交通工具交给PrepareStatement接口的实例对象
*     4。有交通工具在java工程与数据库服务器之间进行传输，推送sql命令并带回执行结果
*     5.交易结束后，销毁相关资源
* */

import java.sql.*;

public class JDBCUtil {
    private Connection con = null;//类文件属性，可以在类文件中所有的方法调用
    private PreparedStatement ps=null;//类文件属性，可以在类文件中所有的方法调用

    //静态语句块static{}
    static{
        //1.注册数据库服务器提供的Driver接口实现类
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("Driver接口实现类被注册");
    }

    //封装Connection对象创建细节
    public Connection createCon(){
        try {
            con= DriverManager.getConnection("jdbc:mysql://localhost:3306/java_text","root","123456");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            System.out.println("Connection对象创建失败");
        }
        return con;
    }

    //封装PreparedStatement对象创建细节
    public PreparedStatement createPstmt(String sql){
        Connection con=createCon();
        try {
            ps=con.prepareStatement(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return ps;
    }

    //封装PrepareStatement对象和Connection对象销毁细节
    public void close(){
        if (ps!=null){
            try {
                ps.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (con!=null){
            try {
                con.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
    //封装PrepareStatement对象和Connection对象和ResultSet对象销毁细节
    public void close(ResultSet rs){
        if (rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        close();
    }
}
